{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第一讲知识点总结"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "python_lesson1知识点={\n",
    "    \"os模块\":{\n",
    "        \"getcwd函数\":[\"操作，100(100),意义，100(90)\"],\n",
    "        #调用这个函数时，会返回你当前的工作目录\n",
    "        例：import os\n",
    "            os.getcwd()\n",
    "        # 'C:\\\\Users\\\\32950\\\\Desktop'\n",
    "        \"environ函数\":[\"操作，100(100),意义，100(90)\"]\n",
    "        #使用这个函数可以访问系统的全部环境变量\n",
    "        例：import os\n",
    "            os.environ\n",
    "        # environ{'ALLUSERSPROFILE': 'C:\\\\ProgramData',\n",
    "        'APPDATA': 'C:\\\\Users\\\\32950\\\\AppData\\\\Roaming',\n",
    "        'COMMONPROGRAMFILES': 'C:\\\\Program Files\\\\Common Files',\n",
    "        'COMMONPROGRAMFILES(X86)': 'C:\\\\Program Files (x86)\\\\Common Files',\n",
    "        'COMMONPROGRAMW6432': 'C:\\\\Program Files\\\\Common Files',\n",
    "        'COMPUTERNAME': 'DESKTOP-PFAMP1J',\n",
    "        'COMSPEC': 'C:\\\\windows\\\\system32\\\\cmd.exe',\n",
    "        'CONDA_DEFAULT_ENV': 'base',\n",
    "        'CONDA_EXE': 'E:\\\\software\\\\anoconda\\\\Scripts\\\\conda.exe',\n",
    "        'CONDA_PROMPT_MODIFIER': '(base) ',\n",
    "        'CONDA_PYTHON_EXE': 'E:\\\\software\\\\anoconda\\\\python.exe',\n",
    "        'CONDA_ROOT': 'E:\\\\software\\\\anoconda',\n",
    "        'CONDA_SHLVL': '1',\n",
    "        'DRIVERDATA': 'C:\\\\Windows\\\\System32\\\\Drivers\\\\DriverData',\n",
    "        'HOMEDRIVE': 'C:',\n",
    "        'HOMEPATH': '\\\\Users\\\\32950',\n",
    "        'LOCALAPPDATA': 'C:\\\\Users\\\\32950\\\\AppData\\\\Local',\n",
    "        'LOGONSERVER': '\\\\\\\\DESKTOP-PFAMP1J',\n",
    "        'NUMBER_OF_PROCESSORS': '6',\n",
    "        'ONEDRIVE': 'C:\\\\Users\\\\32950\\\\OneDrive',\n",
    "        'ONEDRIVECONSUMER': 'C:\\\\Users\\\\32950\\\\OneDrive',\n",
    "        'ONLINESERVICES': 'Online Services',\n",
    "        'OS': 'Windows_NT',\n",
    "        'PATH': 'E:\\\\software\\\\anoconda;E:\\\\software\\\\anoconda\\\\Library\\\\mingw-w64\\\\bin;E:\\\\software\\\\anoconda\\\\Library\\\\usr\\\\bin;E:\\\\software\\\\anoconda\\\\Library\\\\bin;E:\\\\software\\\\anoconda\\\\Scripts;E:\\\\software\\\\anoconda\\\\bin;E:\\\\software\\\\anoconda\\\\condabin;E:\\\\software\\\\anoconda;E:\\\\software\\\\anoconda\\\\Library\\\\mingw-w64\\\\bin;E:\\\\software\\\\anoconda\\\\Library\\\\usr\\\\bin;E:\\\\software\\\\anoconda\\\\Library\\\\bin;E:\\\\software\\\\anoconda\\\\Scripts;C:\\\\windows\\\\system32;C:\\\\windows;C:\\\\windows\\\\System32\\\\Wbem;C:\\\\windows\\\\System32\\\\WindowsPowerShell\\\\v1.0;C:\\\\windows\\\\System32\\\\OpenSSH;C:\\\\Program Files\\\\PuTTY;E:\\\\software\\\\anoconda;E:\\\\software\\\\anoconda\\\\Library\\\\mingw-w64\\\\bin;E:\\\\software\\\\anoconda\\\\Library\\\\usr\\\\bin;E:\\\\software\\\\anoconda\\\\Library\\\\bin;E:\\\\software\\\\anoconda\\\\Scripts;C:\\\\Users\\\\32950\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python38-32\\\\Scripts;C:\\\\Users\\\\32950\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python38-32;C:\\\\Users\\\\32950\\\\AppData\\\\Local\\\\Microsoft\\\\WindowsApps;E:\\\\software\\\\pycharm\\\\PyCharm 2020.1.1\\\\bin;C:\\\\Users\\\\32950\\\\AppData\\\\Local\\\\GitHubDesktop\\\\bin',\n",
    "        'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',\n",
    "        'PLATFORMCODE': 'AN',\n",
    "        'PROCESSOR_ARCHITECTURE': 'AMD64',\n",
    "        'PROCESSOR_IDENTIFIER': 'AMD64 Family 23 Model 96 Stepping 1, AuthenticAMD',\n",
    "        'PROCESSOR_LEVEL': '23',\n",
    "        'PROCESSOR_REVISION': '6001',\n",
    "        'PROGRAMDATA': 'C:\\\\ProgramData',\n",
    "        'PROGRAMFILES': 'C:\\\\Program Files',\n",
    "        'PROGRAMFILES(X86)': 'C:\\\\Program Files (x86)',\n",
    "        'PROGRAMW6432': 'C:\\\\Program Files',\n",
    "        'PROMPT': '(base) $P$G',\n",
    "        'PSMODULEPATH': 'C:\\\\Program Files\\\\WindowsPowerShell\\\\Modules;C:\\\\windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\Modules',\n",
    "        'PUBLIC': 'C:\\\\Users\\\\Public',\n",
    "        'PYCHARM': 'E:\\\\software\\\\pycharm\\\\PyCharm 2020.1.1\\\\bin;',\n",
    "        'REGIONCODE': 'APJ',\n",
    "        'SESSIONNAME': 'Console',\n",
    "        'SYSTEMDRIVE': 'C:',\n",
    "        'SYSTEMROOT': 'C:\\\\windows',\n",
    "        'TEMP': 'C:\\\\Users\\\\32950\\\\AppData\\\\Local\\\\Temp',\n",
    "        'TMP': 'C:\\\\Users\\\\32950\\\\AppData\\\\Local\\\\Temp',\n",
    "        'USERDOMAIN': 'DESKTOP-PFAMP1J',\n",
    "        'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-PFAMP1J',\n",
    "        'USERNAME': '32950',\n",
    "        'USERPROFILE': 'C:\\\\Users\\\\32950',\n",
    "        'WINDIR': 'C:\\\\windows',\n",
    "        'CONDA_PREFIX': 'E:\\\\software\\\\anoconda',\n",
    "        'KERNEL_LAUNCH_TIMEOUT': '40',\n",
    "        'JPY_INTERRUPT_EVENT': '2576',\n",
    "        'IPY_INTERRUPT_EVENT': '2576',\n",
    "        'JPY_PARENT_PID': '2556',\n",
    "        'TERM': 'xterm-color',\n",
    "        'CLICOLOR': '1',\n",
    "        'PAGER': 'cat',\n",
    "        'GIT_PAGER': 'cat',\n",
    "        'MPLBACKEND': 'module://ipykernel.pylab.backend_inline'}\n",
    "\n",
    "    }\n",
    "    \"sys模块\":{\n",
    "        \"platform函数\":[\"操作，100(100),意义，100(90)\"]\n",
    "        #使用此函数可以帮助了解运行解释器的系统\n",
    "        例:import sys\n",
    "            sys.platform\n",
    "        # 'win32'\n",
    "\n",
    "    }\n",
    "    \"datetime、time模块\":{\n",
    "        \"date.today函数\":[\"操作，100(100),意义，100(100)\"],\n",
    "        # 使用此函数可以调用今天的日期\n",
    "        例:import datetime\n",
    "            datetime.date.today()\n",
    "        # datetime.date(2020, 12, 3)\n",
    "        \"date.isoformat函数\":[\"操作，100(100),意义，100(100)\"],\n",
    "        #使用此函数传入今天的日期可以以字符串的方式显示\n",
    "        例:import datetime\n",
    "            datetime.date.isoformat(datetime.date.today())\n",
    "        # '2020-12-03'\n",
    "        \"strftime函数\":[\"操作，100(100),意义，100(100)\"]\n",
    "        #使用此函数可以指定你希望以什么方式显示时间\n",
    "        例:import time\n",
    "            time.strftime(\"%H:%M\")\n",
    "        # '11:39'\n",
    "    }\n",
    "    \"if语句\":[\"操作，100(90),意义，100(100)\"]\n",
    "    # if、elif、else +条件+语句块，表示判断\n",
    "    \"For循环及range内置函数\":{\n",
    "        \"for循环\":[\"操作，100(90),意义，100(100)\"],\n",
    "        #循环迭代处理（一个数字列表/字符串/整数参数）\n",
    "        例：for i in range(3):\n",
    "                print(\"hello world\")\n",
    "        # hello world\n",
    "        # hello world\n",
    "        # hello world\n",
    "        \"range内置函数\":[\"操作，100(90),意义，100(100)\"],\n",
    "        #函数可创建一个整数列表，一般用在 for 循环中\n",
    "        #range(start, stop, step)\n",
    "        #start: 计数从 start 开始。默认是从 0 开始。例如range（5）等价于range（0， 5）;\n",
    "        #stop: 计数到 stop 结束，但不包括 stop。例如：range（0， 5） 是[0, 1, 2, 3, 4]没有5\n",
    "        #step：步长，默认为1。例如：range（0， 5） 等价于 range(0, 5, 1)\n",
    "    \"random模块\":[\"操作，100(90),意义，100(100)\"]\n",
    "        \"random.random()\":[\"操作，100(90),意义，100(100)\"]\n",
    "        #用于生成一个0到1的随机符点数: 0 <= n < 1.0\n",
    "        \"random.uniform\":[\"操作，100(90),意义，100(100)\"]\n",
    "        #random.uniform(a, b)，用于生成一个指定范围内的随机符点数，两个参数其中一个是上限，一个是下限\n",
    "        \"random.randint\":[\"操作，100(90),意义，100(100)\"]\n",
    "        #random.randint(a, b)，用于生成一个指定范围内的整数。其中参数a是下限，参数b是上限\n",
    "        \"random.randrange\":[\"操作，100(90),意义，100(100)\"]\n",
    "        #random.randrange([start], stop[, step])，从指定范围内，按指定基数递增的集合中 获取一个随机数\n",
    "        \"random.choice\":[\"操作，100(90),意义，100(100)\"]\n",
    "        #random.choice从序列中获取一个随机元素。其函数原型为：random.choice(sequence)。参数sequence表示一个有序类型\n",
    "        \"random.shuffle\":[\"操作，100(90),意义，100(100)\"]\n",
    "        #random.shuffle(x[, random])，用于将一个列表中的元素打乱\n",
    "        \"random.sample\":[\"操作，100(90),意义，100(100)\"]\n",
    "        #random.sample(sequence, k)，从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列\n",
    "    }\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第二、三讲知识点总结\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "python_lesson2、3知识点={\n",
    "    \"字符串相关知识点\"：{\n",
    "        \"字符串的拼接\":[\"操作，100(100),意义，100(100)\"],\n",
    "        #join与+都可以用拼接字符串\n",
    "        例：a=\"hnh\"\n",
    "            b=\"is handsome\"\n",
    "            c=a+b\n",
    "        # 'hnh is handsome'\n",
    "        \"str.count()\":[\"操作，100(100),意义，100(100)\"],\n",
    "        # 计算字符串某个数值出现的次数\n",
    "        例：a=\"hnh\"\n",
    "            print(a.count(\"h\"))\n",
    "        # 2\n",
    "        \"str.split（）\":[\"操作，100(90),意义，100(100)\"],\n",
    "        # 指定符号对字符串进行拆分\n",
    "        例：a=\"1,2,3\"\n",
    "        print(a.split(\",\"))\n",
    "        # ['1', '2', '3']\n",
    "        'str.isdigit':[\"操作，100(90),意义，100(100)\"]\n",
    "        # 如果字符串只包含数字则返回 True，否则返回 False。\n",
    "        例：a='123'\n",
    "            print(a.isdigit)\n",
    "        # True\n",
    "    }\n",
    "    \"列表\":{\n",
    "        \"列表切片\":[\"操作，100(100),意义，100(100)\"]\n",
    "        #list[start,end,step]\n",
    "        例：a=[1,2,3,4]\n",
    "            print(a[1:3])\n",
    "        # [2, 3]\n",
    "        \"列表函数\":{\n",
    "            \"cmp(list1, list2)\": [\"操作，100(85),意义，100(100)\"]\n",
    "            #比较两个列表的元素\n",
    "            \"len(list)\": [\"操作，100(90),意义，100(100)\"]\n",
    "            #列表元素个数\n",
    "            \"max(list)\": [\"操作，100(90),意义，100(100)\"]\n",
    "            #返回列表元素最大值\n",
    "            \"min(list)\": [\"操作，100(90),意义，100(100)\"]\n",
    "            #返回列表元素最小值\n",
    "            \"list(seq)\": [\"操作，100(90),意义，100(100)\"]\n",
    "            #将元组转换为列表   \n",
    "        }\n",
    "        \"列表方法\":{\n",
    "            \"list.append(obj)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 在列表末尾添加新的对象\n",
    "            \"list.extend(obj)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 在列表末尾一次性追加另一个序列中的多个值（用新列表扩展原来的列表）\n",
    "            \"list.count(obj)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 统计某个元素在列表中出现的次数\n",
    "            \"list.insert(index,obj)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 将对象插入列表\n",
    "            \"list.index(obj)\":[\"操作，100(90),意义，100(100)\"],,\n",
    "            # 从列表中找出某个值第一个匹配项的索引位置\n",
    "            \"list.pop()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 移除列表中的一个元素（默认最后一个元素），并且返回该元素的值\n",
    "            \"list.remove(obj)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 移除列表中某个值的第一个匹配项\n",
    "            \"list.reverse()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 反向列表中元素\n",
    "            \"list.clear()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 保留列表名称，清空里面的值\n",
    "            \"list.copy()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 复制列表\n",
    "            \"list.sort\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 对原列表进行排序\n",
    "        }\n",
    "        \n",
    "    }\n",
    "    \"元组\":{\n",
    "        #元组是一个一旦创建就不能改变的列表，任何情况下这个元组都不能再改变\n",
    "        \"元组方法\":{\n",
    "            \"index() \":[\"操作，100(90),意义，100(100)\"],\n",
    "            #用于从元组中找出某个对象第一个匹配项的索引位置，如果这个对象不在元组中会报一个异常\n",
    "            \"count() \":[\"操作，100(100),意义，100(100)\"],\n",
    "            #用于统计某个元素在元组中出现的次数\n",
    "        }\n",
    "        \"元组内置函数\":{\n",
    "            \"cmp(tuple1, tuple2)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            #比较两个元组元素\n",
    "            \"len(tuple)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            #计算元组元素个数\n",
    "            \"max(tuple)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            #返回元组中元素最大值\n",
    "            \"min(tuple)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            #返回元组中元素最小值\n",
    "            \"tuple(seq)\":[\"操作，100(90),意义，100(100)\"],\n",
    "            #将列表转换为元组\n",
    "        }\n",
    "    }\n",
    "    \"字典\":{\n",
    "            \"对字典的键和键值的理解\":[\"操作，100(90),意义，100(100)\"],\n",
    "            \"访问字典里的值\":[\"操作，100(90),意义，100(100)\"],\n",
    "            例：dict={'me':hnh}\n",
    "                dict['me']\n",
    "            # hnh\n",
    "            \"修改字典的值\":[\"操作，100(100),意义，100(100)\"],\n",
    "            例：dict1={'me':dd}\n",
    "                dict1['me']=hnh\n",
    "                dict1\n",
    "            # hnh\n",
    "            \"删除字典元素\":[\"操作，100(90),意义，100(100)\"],\n",
    "            例：dict1={'me':hnh}\n",
    "                del dict1\n",
    "            # dict1={}\n",
    "            \"字典的内置函数\":{\n",
    "                \"len(dict)\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 计算字典元素个数，即键的总数。\n",
    "                \"str(dict)\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 输出字典可打印的字符串表示。\n",
    "                },\n",
    "            \"字典的内置方法\":{\n",
    "                \"dict.clear()\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 删除字典内所有元素\n",
    "                \"dict.copy()\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 返回一个字典的浅复制\n",
    "                \"dict.get(key, default=None)\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 返回指定键的值，如果值不在字典中返回default值\n",
    "                \"dict.items()\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 以列表返回可遍历的(键, 值) 元组数组\n",
    "                \"dict.keys()\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 以列表返回一个字典所有的键\n",
    "                \"dict.setdefault(key, default=None)\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 和get()类似, 但如果键不存在于字典中，将会添加键并将值设为default\n",
    "                \"dict.values()\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 以列表返回字典中的所有值\n",
    "                \"dict.update(dict2)\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 把字典dict2的键/值对更新到dict里\n",
    "                \"pop(key[,default])\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 删除字典给定键 key 所对应的值，返回值为被删除的值。key值必须给出。 否则，返回default值。\n",
    "                \"popitem()\":[\"操作，100(90),意义，100(100)\"],\n",
    "                # 返回并删除字典中的最后一对键和值\n",
    "            }\n",
    "        },\n",
    "    \"集合\":{\n",
    "        \"集合的方法\":{\n",
    "            \"set.add()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            #为集合添加元素\n",
    "            例：set1 = {1, 2, 3}\n",
    "                set1.add((1, 2))\n",
    "                print(set1)\n",
    "            # 输出结果{(1, 2), 1, 2, 3}\n",
    "            \"set.clear()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 移除集合中的所有元素\n",
    "            例：set1 = {1,2,3}\n",
    "                set1.clear()\n",
    "                print(set1)\n",
    "            #输出结果set()\n",
    "            \"set.copy()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 拷贝一个集合\n",
    "            例：set1 = {1,2,3}\n",
    "                set1.clear()\n",
    "                print(set1)\n",
    "            #输出结果set()\n",
    "            \"set.difference()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 返回多个集合的差集\n",
    "            例：set1 = {1,2,3}\n",
    "                set2 = {3,4}\n",
    "                set3 = set1.difference(set2)\n",
    "                print(set3)\n",
    "            # 输出结果皆为{1, 2}\n",
    "            \"set.discard()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 删除集合中指定的元素\n",
    "            例：set1 = {1,2,3}\n",
    "                set1.discard(2)\n",
    "                print(set1)\n",
    "            #输出结果{1, 3}\n",
    "            \"set.intersection()\":[\"操作，100(80),意义，100(100)\"],\n",
    "            # 返回集合的交集\n",
    "            例：set1 = {1,2,3}\n",
    "                set2 = {3,4}\n",
    "                set3 = set1.intersection(set2)\n",
    "                print(set3)\n",
    "            # 最后输出结果皆为{3}\n",
    "            \"set.isdisjoint()\":[\"操作，100(80),意义，100(100)\"],\n",
    "            # 判断两个集合是否包含相同的元素，如果没有返回 True，否则返回 False。\n",
    "            例：set1 = {1,2,3}\n",
    "                set2 = {3,4}\n",
    "                print(set1.isdisjoint(set2))\n",
    "            # False\n",
    "            \"set.pop()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 随机移除元素(默认是最后一个元素)\n",
    "            例：set1 = {1,2,3}\n",
    "                a = set1.pop()\n",
    "                print(set1)\n",
    "                {2,3}\n",
    "                print(a)\n",
    "            # 1\n",
    "            \"set.symmetric_difference()\":[\"操作，100(80),意义，100(100)\"],\n",
    "            # 返回两个集合中不重复的元素集合。\n",
    "            例：set1 = {1,2,3}\n",
    "                set2 = {3,4}\n",
    "                set3 = set1.symmetric_difference(set2)\n",
    "                print(set3)\n",
    "            # {1, 2, 4}\n",
    "            \"set.union()\":[\"操作，100(90),意义，100(100)\"],\n",
    "            # 返回两个集合的并集\n",
    "            例：set1 = {1,2,3}\n",
    "                set2 = {3,4}\n",
    "                set3=set1.union(set2)\n",
    "                print(set3)\n",
    "            # 1, 2, 3, 4}\n",
    "\n",
    "        }\n",
    "    }\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第四讲知识点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "python_lesson4知识点={\n",
    "    \"函数的初步学习\":{\n",
    "        \"函数关键字def return\":[\"操作，100(90),意义，100(100)\"],\n",
    "        \"函数两种添加注释方法\":[\"操作，100(90),意义，100(100)\"],\n",
    "        # 方法一’‘’str‘’‘  方法二 #\n",
    "        \"函数的*args用法\":[\"操作，100(90),意义，100(100)\"],\n",
    "        # 传入多个参数，转化成元组\n",
    "        \"函数的**kwargs用法\":[\"操作，100(90),意义，100(100)\"],\n",
    "        # 把关键字参数，转化成字典\n",
    "        \"函数的调用 import\":[\"操作，100(90),意义，100(100)\"],\n",
    "        \"函数的as用法\":[\"操作，100(90),意义，100(100)\"],\n",
    "        \"从模块中导入函数\":[\"操作，100(90),意义，100(100)\"],\n",
    "    }\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
